Imports System.Data.SqlClient
Imports System.ComponentModel

Public Class cls_cajaasiento_

    Implements ICloneable

#Region "Variables ..."
    Private int_idcajaasiento As Integer = 0
    Private int_idcaja As Integer = 0
    Private int_idcajaconcepto As Integer = 0
    Private dte_fecha As DateTime = New System.DateTime(Now.Year, 1, 1)
    Private dbl_importe As Double = 0
    Private int_tipoimporte As enu_tipoimporte = 0
    Private int_idtercero As Integer = 0
    Private int_idasiento As Integer = 0
    Private str_observaciones As String = ""
    Private int_tipo As enu_tipo = 0
    Private int_iddocumento As Integer = 0

    Private obj_caja As cls_caja_
    Private obj_cajaconcepto As cls_cajaconcepto_
    Private obj_tercero As cls_tercero_
    Private obj_asiento As cls_asiento_
    Private obj_documento As cls_documento_

    Private col_Items As Collections.Generic.List(Of cls_cajaasiento_) = Nothing

    Public Enum enu_tipoimporte
        <Description("Ingreso")> Ingreso = 0
        <Description("Salida")> Salida = 1
    End Enum

    Public Enum enu_tipo
        <Description("Manual")> Manual = 0
        <Description("Automatico")> Automatico = 1
    End Enum
#End Region

#Region "Propiedades ..."
    Property idcajaasiento() As Integer
        Get
            idcajaasiento = int_idcajaasiento
        End Get
        Set(ByVal value As Integer)
            int_idcajaasiento = value
        End Set
    End Property
    Property idcaja() As Integer
        Get
            idcaja = int_idcaja
        End Get
        Set(ByVal value As Integer)
            int_idcaja = value
        End Set
    End Property
    Property idcajaconcepto() As Integer
        Get
            idcajaconcepto = int_idcajaconcepto
        End Get
        Set(ByVal value As Integer)
            int_idcajaconcepto = value
        End Set
    End Property
    Property fecha() As DateTime
        Get
            fecha = dte_fecha
        End Get
        Set(ByVal value As DateTime)
            dte_fecha = value
        End Set
    End Property
    Property importe() As Double
        Get
            importe = dbl_importe
        End Get
        Set(ByVal value As Double)
            dbl_importe = value
        End Set
    End Property
    Property tipoimporte() As enu_tipoimporte
        Get
            tipoimporte = int_tipoimporte
        End Get
        Set(ByVal value As enu_tipoimporte)
            int_tipoimporte = value
        End Set
    End Property
    Property tipo() As enu_tipo
        Get
            tipo = int_tipo
        End Get
        Set(ByVal value As enu_tipo)
            int_tipo = value
        End Set
    End Property
    Property idtercero() As Integer
        Get
            idtercero = int_idtercero
        End Get
        Set(ByVal value As Integer)
            int_idtercero = value
        End Set
    End Property
    Property idasiento() As Integer
        Get
            idasiento = int_idasiento
        End Get
        Set(ByVal value As Integer)
            int_idasiento = value
        End Set
    End Property
    Property iddocumento() As Integer
        Get
            iddocumento = int_iddocumento
        End Get
        Set(ByVal value As Integer)
            int_iddocumento = value
        End Set
    End Property
    Property observaciones() As String
        Get
            observaciones = str_observaciones
        End Get
        Set(ByVal value As String)
            str_observaciones = value
        End Set
    End Property

    Property caja() As cls_caja_
        Get
            If IsNothing(obj_caja) Then
                obj_caja = New cls_caja_
                If Not obj_caja.Buscar(idcaja) Then
                    obj_caja = Nothing
                End If
            End If
            caja = obj_caja
        End Get
        Set(ByVal value As cls_caja_)
            obj_caja = value
        End Set
    End Property
    Property cajaconcepto() As cls_cajaconcepto_
        Get
            If IsNothing(obj_cajaconcepto) Then
                obj_cajaconcepto = New cls_cajaconcepto_
                If Not obj_cajaconcepto.Buscar(idcajaconcepto) Then
                    obj_cajaconcepto = Nothing
                End If
            End If
            cajaconcepto = obj_cajaconcepto
        End Get
        Set(ByVal value As cls_cajaconcepto_)
            obj_cajaconcepto = value
        End Set
    End Property
    Property tercero() As cls_tercero_
        Get
            If IsNothing(obj_tercero) Then
                obj_tercero = New cls_tercero_
                If Not obj_tercero.Buscar(idtercero) Then
                    obj_tercero = Nothing
                End If
            End If
            tercero = obj_tercero
        End Get
        Set(ByVal value As cls_tercero_)
            obj_tercero = value
        End Set
    End Property
    Property asiento() As cls_asiento_
        Get
            If IsNothing(obj_asiento) Then
                obj_asiento = New cls_asiento_
                If Not obj_asiento.Buscar(idasiento) Then
                    obj_asiento = Nothing
                End If
            End If
            asiento = obj_asiento
        End Get
        Set(ByVal value As cls_asiento_)
            obj_asiento = value
        End Set
    End Property
    Property documento() As cls_documento_
        Get
            If IsNothing(obj_documento) Then
                obj_documento = New cls_documento_
                If Not obj_documento.Buscar(iddocumento) Then
                    obj_documento = Nothing
                End If
            End If
            documento = obj_documento
        End Get
        Set(ByVal value As cls_documento_)
            obj_documento = value
        End Set
    End Property
    Property Items() As Collections.Generic.List(Of cls_cajaasiento_)
        Get
            Items = col_Items
        End Get
        Set(ByVal value As Collections.Generic.List(Of cls_cajaasiento_))
            col_Items = value
        End Set
    End Property
#End Region

    Private Sub CargarColeccion(ByVal obj_Reader As SqlDataReader)
        col_Items = New Collections.Generic.List(Of cls_cajaasiento_)
        While obj_Reader.Read()
            Dim Elemento As New cls_cajaasiento_
            Elemento.int_idcajaasiento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaasiento")))

            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idcaja"))) = False Then
                Elemento.int_idcaja = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcaja")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaconcepto"))) = False Then
                Elemento.int_idcajaconcepto = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaconcepto")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("fecha"))) = False Then
                Elemento.dte_fecha = (obj_Reader.GetValue(obj_Reader.GetOrdinal("fecha")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("importe"))) = False Then
                Elemento.dbl_importe = (obj_Reader.GetValue(obj_Reader.GetOrdinal("importe")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipoimporte"))) = False Then
                Elemento.int_tipoimporte = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipoimporte")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idtercero"))) = False Then
                Elemento.int_idtercero = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idtercero")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idasiento"))) = False Then
                Elemento.int_idasiento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idasiento")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("observaciones"))) = False Then
                Elemento.str_observaciones = (obj_Reader.GetValue(obj_Reader.GetOrdinal("observaciones")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo"))) = False Then
                Elemento.int_tipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("iddocumento"))) = False Then
                Elemento.int_iddocumento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("iddocumento")))
            End If
            col_Items.Add(Elemento)
        End While
    End Sub

    Private Sub CargarVariables(ByVal obj_Reader As SqlDataReader)
        obj_Reader.Read()
        int_idcajaasiento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaasiento")))

        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idcaja"))) = False Then
            int_idcaja = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcaja")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaconcepto"))) = False Then
            int_idcajaconcepto = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idcajaconcepto")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("fecha"))) = False Then
            dte_fecha = (obj_Reader.GetValue(obj_Reader.GetOrdinal("fecha")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("importe"))) = False Then
            dbl_importe = (obj_Reader.GetValue(obj_Reader.GetOrdinal("importe")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipoimporte"))) = False Then
            int_tipoimporte = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipoimporte")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idtercero"))) = False Then
            int_idtercero = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idtercero")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idasiento"))) = False Then
            int_idasiento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idasiento")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("observaciones"))) = False Then
            str_observaciones = (obj_Reader.GetValue(obj_Reader.GetOrdinal("observaciones")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo"))) = False Then
            int_tipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("iddocumento"))) = False Then
            int_iddocumento = (obj_Reader.GetValue(obj_Reader.GetOrdinal("iddocumento")))
        End If
    End Sub

    Public Sub Nuevo(Optional ByVal ObtenerID As Boolean = False)
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__Nuevo"
                .Parameters.Add("@idcaja", SqlDbType.Int).Value = int_idcaja
                .Parameters.Add("@idcajaconcepto", SqlDbType.Int).Value = int_idcajaconcepto
                .Parameters.Add("@fecha", SqlDbType.DateTime).Value = dte_fecha
                .Parameters.Add("@importe", SqlDbType.Decimal).Value = dbl_importe
                .Parameters.Add("@tipoimporte", SqlDbType.Int).Value = int_tipoimporte
                .Parameters.Add("@idtercero", SqlDbType.Int).Value = int_idtercero
                .Parameters.Add("@idasiento", SqlDbType.Int).Value = IIf(int_idasiento = 0, DBNull.Value, int_idasiento)
                .Parameters.Add("@observaciones", SqlDbType.NVarChar).Value = str_observaciones
                .Parameters.Add("@tipo", SqlDbType.Int).Value = int_tipo
                .Parameters.Add("@iddocumento", SqlDbType.Int).Value = int_iddocumento
                .ExecuteNonQuery()
            End With
            CargarUltimo()

            If cajaconcepto.tipo <> cls_cajaconcepto_.enu_tipo.Ninguno Then
                Dim asiento As New cls_asiento_
                asiento.idtercero = idtercero
                asiento.importe = importe
                asiento.tipo = cls_documento_.enu_tipodocumento.Caja
                asiento.tipoimporte = tipoimporte
                Dim config_parametro As New cls_config_parametro_
                Select Case cajaconcepto.tipo
                    Case cls_cajaconcepto_.enu_tipo.Cliente
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaCliente").valor
                    Case cls_cajaconcepto_.enu_tipo.Personal
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaProveedor").valor
                    Case cls_cajaconcepto_.enu_tipo.Proveedor
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaPersonal").valor
                End Select
                asiento.observaciones = observaciones
                asiento.iddocumento = idcajaasiento
                asiento.fecha = fecha.Date
                asiento.Nuevo(True)
                idasiento = asiento.idasiento
                Modificar()
            End If


        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Crear el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Modificar()
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__Modificar"
                .Parameters.Add("@idcajaasiento", SqlDbType.Int).Value = int_idcajaasiento
                .Parameters.Add("@idcaja", SqlDbType.Int).Value = int_idcaja
                .Parameters.Add("@idcajaconcepto", SqlDbType.Int).Value = int_idcajaconcepto
                .Parameters.Add("@fecha", SqlDbType.DateTime).Value = dte_fecha
                .Parameters.Add("@importe", SqlDbType.Decimal).Value = dbl_importe
                .Parameters.Add("@tipoimporte", SqlDbType.Int).Value = int_tipoimporte
                .Parameters.Add("@idtercero", SqlDbType.Int).Value = int_idtercero
                .Parameters.Add("@idasiento", SqlDbType.Int).Value = IIf(int_idasiento = 0, DBNull.Value, int_idasiento)
                .Parameters.Add("@observaciones", SqlDbType.NVarChar).Value = str_observaciones
                .Parameters.Add("@tipo", SqlDbType.Int).Value = int_tipo
                .Parameters.Add("@iddocumento", SqlDbType.Int).Value = int_iddocumento
                .ExecuteNonQuery()
            End With

            If cajaconcepto.tipo <> cls_cajaconcepto_.enu_tipo.Ninguno Then
                Dim asiento As New cls_asiento_
                asiento.Buscar(idasiento)
                asiento.idtercero = idtercero
                asiento.importe = importe
                asiento.tipo = cls_documento_.enu_tipodocumento.Caja
                Dim config_parametro As New cls_config_parametro_
                Select Case cajaconcepto.tipo
                    Case cls_cajaconcepto_.enu_tipo.Cliente
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaCliente").valor
                    Case cls_cajaconcepto_.enu_tipo.Personal
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaProveedor").valor
                    Case cls_cajaconcepto_.enu_tipo.Proveedor
                        asiento.idasientoconcepto = config_parametro.Buscar("asientoconceptoCajaPersonal").valor
                End Select
                asiento.tipoimporte = tipoimporte
                asiento.observaciones = observaciones
                asiento.iddocumento = idcajaasiento
                asiento.fecha = fecha.Date
                asiento.Modificar()
            End If

        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Modificar el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Eliminar(ByVal idcajaasiento As Integer)
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__Eliminar"
                .Parameters.Add("@idcajaasiento", SqlDbType.Int).Value = idcajaasiento
                .ExecuteNonQuery()
            End With
            If cajaconcepto.tipo <> cls_cajaconcepto_.enu_tipo.Ninguno Then
                Dim asiento As New cls_asiento_
                If asiento.Buscar(idasiento) Then
                    asiento.Eliminar(idasiento)
                End If
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Eliminar el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Function Buscar(ByVal idcajaasiento As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            Buscar = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__Buscar"
                .Parameters.Add("@idcajaasiento", SqlDbType.Int).Value = idcajaasiento
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                Buscar = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Buscar el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function


    Public Function BuscarXidasiento(ByVal prm_idasiento As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            BuscarXidasiento = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__BuscarXidasiento"
                .Parameters.Add("@idasiento", SqlDbType.Int).Value = prm_idasiento
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                BuscarXidasiento = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Buscar el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function
    Public Function BuscarXiddocumento(ByVal prm_iddocumento As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            BuscarXiddocumento = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__BuscarXiddocumento"
                .Parameters.Add("@iddocumento", SqlDbType.Int).Value = prm_iddocumento
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                BuscarXiddocumento = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Buscar el registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function
    Public Sub CargarUltimo()
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__CargarUltimo"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarUltimo registro de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Sub

    Public Function CargarTodos() As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarTodos = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__CargarTodos"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarTodos = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarTodos los registros de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function CargarXidcaja(ByVal prm_int_idcaja As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarXidcaja = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "cajaasiento__CargarXidcaja"
                .Parameters.Add("@idcaja", SqlDbType.Int).Value = prm_int_idcaja
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarXidcaja = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarXidcaja los registros de cajaasiento_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function
    Public Function Clone() As Object Implements System.ICloneable.Clone
        Dim obj_cajaasiento_Clon As New cls_cajaasiento_
        obj_cajaasiento_Clon.int_idcajaasiento = Me.int_idcajaasiento
        obj_cajaasiento_Clon.int_idcaja = Me.int_idcaja
        obj_cajaasiento_Clon.int_idcajaconcepto = Me.int_idcajaconcepto
        obj_cajaasiento_Clon.dte_fecha = Me.dte_fecha
        obj_cajaasiento_Clon.dbl_importe = Me.dbl_importe
        obj_cajaasiento_Clon.int_tipoimporte = Me.int_tipoimporte
        obj_cajaasiento_Clon.int_idtercero = Me.int_idtercero
        obj_cajaasiento_Clon.int_idasiento = Me.int_idasiento
        obj_cajaasiento_Clon.str_observaciones = Me.str_observaciones
        obj_cajaasiento_Clon.col_Items = Me.col_Items
        Return obj_cajaasiento_Clon
    End Function

End Class
